#pragma once

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <stdbool.h>

typedef int HpDataType;

typedef struct Heap {

	HpDataType* a;
	int size;
	int capacity;
}HP;

// struct Heap ;

void HeapCreate(HP* php, HpDataType* a, int n);

void HeapPrint(HP* php );
void HeapInit(HP* php );
void HeapDestory(HP* php );


void HeapPush(HP* php, HpDataType x);

void HeapPop(HP* php);

int HeapSize(HP* php);

bool HeapEmpty(HP* php);

void AdjustDown(HpDataType* a, int n, int parent);
void AdjustUp(HpDataType* a,int child);
void Swap(HpDataType* p1, HpDataType* p2);
HpDataType HeapTop(HP* php);
